home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _CFEAECF6DB6B4278B4326E2BF30BA1F3 < prev    next >
Encoding:
Text File  |  2004-01-06  |  23.7 KB  |  709 lines

  1. Player = {
  2.  
  3. ------------------------------------------------------------------------------------
  4.     painSounds = {
  5.             {"languages/voicepacks/Jack/pain_1.wav",0,115,3,30},
  6.             {"languages/voicepacks/Jack/pain_2.wav",0,115,3,30},
  7.             {"languages/voicepacks/Jack/pain_3.wav",0,115,3,30},
  8.             {"languages/voicepacks/Jack/pain_4.wav",0,115,3,30},
  9.             {"languages/voicepacks/Jack/pain_5.wav",0,115,3,30},
  10.             {"languages/voicepacks/Jack/pain_6.wav",0,115,3,30},
  11.             {"languages/voicepacks/Jack/pain_7.wav",0,115,3,30},
  12.             {"languages/voicepacks/Jack/pain_8.wav",0,115,3,30},
  13.             {"languages/voicepacks/Jack/pain_9.wav",0,115,3,30},
  14.             {"languages/voicepacks/Jack/pain_10.wav",0,115,3,30},
  15.             {"languages/voicepacks/Jack/pain_11.wav",0,115,3,30},
  16.             {"languages/voicepacks/Jack/pain_12.wav",0,115,3,30},
  17.             {"languages/voicepacks/Jack/pain_13.wav",0,115,3,30},
  18.             {"languages/voicepacks/Jack/pain_14.wav",0,115,3,30},
  19.             {"languages/voicepacks/Jack/pain_15.wav",0,115,3,30},
  20.             {"languages/voicepacks/Jack/pain_16.wav",0,115,3,30},
  21.             {"languages/voicepacks/Jack/pain_17.wav",0,115,3,30},
  22.             {"languages/voicepacks/Jack/pain_18.wav",0,115,3,30},
  23.             {"languages/voicepacks/Jack/pain_19.wav",0,115,3,30},
  24.             {"languages/voicepacks/Jack/pain_20.wav",0,115,3,30},
  25.             {"languages/voicepacks/Jack/pain_21.wav",0,115,3,30},
  26.             {"languages/voicepacks/Jack/pain_22.wav",0,115,3,30},
  27.             {"languages/voicepacks/Jack/pain_23.wav",0,115,3,30},
  28.             {"languages/voicepacks/Jack/pain_24.wav",0,115,3,30},
  29.             {"languages/voicepacks/Jack/pain_25.wav",0,115,3,30},
  30.             
  31.         },
  32.  
  33.     deathSounds = {
  34.             {"languages/voicepacks/Jack/death_1.wav",0,115,3,20},
  35.             {"languages/voicepacks/Jack/death_2.wav",0,115,3,20},
  36.             {"languages/voicepacks/Jack/death_3.wav",0,115,3,20},
  37.             {"languages/voicepacks/Jack/death_4.wav",0,115,3,20},
  38.             {"languages/voicepacks/Jack/death_5.wav",0,115,3,20},
  39.             {"languages/voicepacks/Jack/death_6.wav",0,115,3,20},
  40.             {"languages/voicepacks/Jack/death_7.wav",0,115,3,20},
  41.             {"languages/voicepacks/Jack/death_8.wav",0,115,3,20},
  42.             {"languages/voicepacks/Jack/death_9.wav",0,115,3,20},
  43.             {"languages/voicepacks/Jack/death_10.wav",0,115,3,20},
  44.             {"languages/voicepacks/Jack/death_11.wav",0,115,3,20},
  45.             {"languages/voicepacks/Jack/death_12.wav",0,115,3,20},
  46.             {"languages/voicepacks/Jack/death_13.wav",0,115,3,20},
  47.             {"languages/voicepacks/Jack/death_14.wav",0,115,3,20},
  48.             {"languages/voicepacks/Jack/death_15.wav",0,115,3,20},
  49.             {"languages/voicepacks/Jack/death_16.wav",0,115,3,20},
  50.             {"languages/voicepacks/Jack/death_17.wav",0,115,3,20},
  51.             {"languages/voicepacks/Jack/death_18.wav",0,115,3,20},
  52.             {"languages/voicepacks/Jack/death_19.wav",0,115,3,20},
  53.             {"languages/voicepacks/Jack/death_20.wav",0,115,3,20},
  54.             {"languages/voicepacks/Jack/death_21.wav",0,115,3,20},
  55.             {"languages/voicepacks/Jack/death_22.wav",0,115,3,20},
  56.             {"languages/voicepacks/Jack/death_23.wav",0,115,3,20},
  57.             {"languages/voicepacks/Jack/death_24.wav",0,115,3,20},
  58.             
  59.         },
  60.         
  61.     melee_sounds = {
  62.             {"Sounds/Weapons/melee/swish.wav",0,115,3,20},
  63.     },
  64.     EquipmentSounds = {
  65.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle1.wav",SOUND_UNSCALABLE,50,5,30),
  66.         --Sound:Load3DSound("SOUNDS/player/playermovement/gingle2.wav",SOUND_UNSCALABLE,50,5,30),
  67.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle3.wav",SOUND_UNSCALABLE,50,5,30),
  68.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle4.wav",SOUND_UNSCALABLE,50,5,30),
  69.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle5.wav",SOUND_UNSCALABLE,50,5,30),
  70.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle6.wav",SOUND_UNSCALABLE,50,5,30),
  71.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle7.wav",SOUND_UNSCALABLE,50,5,30),
  72.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle8.wav",SOUND_UNSCALABLE,50,5,30),
  73.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle9.wav",SOUND_UNSCALABLE,50,5,30),
  74.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle10.wav",SOUND_UNSCALABLE,50,5,30),
  75.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle11.wav",SOUND_UNSCALABLE,50,5,30),
  76.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle12.wav",SOUND_UNSCALABLE,50,5,30),
  77.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle13.wav",SOUND_UNSCALABLE,50,5,30),
  78.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle14.wav",SOUND_UNSCALABLE,50,5,30),
  79.         Sound:Load3DSound("SOUNDS/player/playermovement/gingle15.wav",SOUND_UNSCALABLE,50,5,30),
  80.  
  81.     },
  82.     EquipmentSoundProbability=100,
  83.     --StanceChangeSound=Sound:LoadSound("SOUNDS/player/playermovement/stancechange4.wav",SOUND_UNSCALABLE,255),
  84.     
  85.     -- COMMENTED DUE TO BAD SOUNDING, PLEASE DO NOT REMOVE YET !!! 
  86.     --ExhaustedBreathingSound=Sound:LoadSound("sounds/player/exhaustedbreathLP2.wav",SOUND_UNSCALABLE,255),
  87.     --ExhaustedBreathingStart=3,    -- start breathing after this amount of seconds after start running
  88.     --ExhaustedBreathingStop=2,        -- stop breathing after this amount of seconds after stop running
  89. ------------------------------------------------------------------------------------
  90.  
  91.     iLastWaterSurfaceParticleSpawnedTime = _time,
  92.     Energy = 100,
  93.     MaxEnergy = 100,
  94.     EnergyIncreaseRate = 1,    -- units per second
  95.     MinRequiredEnergy = 20,    -- minimum energy needed to turn on heat vision
  96.     EnergyChanged = nil,
  97.  
  98.  
  99.     vLastPos = { x=0, y=0, z=0 },
  100.     fLastRefractValue = 0,
  101.     bSplashProcessed = nil,
  102.     --iCurVehicle = nil,
  103.     
  104.     BinocularsActive = 0,
  105.  
  106.     Ammo = {
  107.         Pistol = 0,
  108.         Assault = 0,
  109.         Sniper = 0,
  110.         Minigun = 0,
  111.         Shotgun = 0,
  112.         MortarShells = 0,
  113.         Grenades = 0,
  114.         HandGrenades = 0,
  115.         Rocket = 0,
  116.         Battery = 0,
  117.     },
  118.  
  119.     WeaponState = nil,
  120.  
  121.     soundtimer = 0,
  122.  
  123.     Properties = {
  124.         bHasArmor = 0,
  125.         bHelmetOnStart = 0,
  126.         eye_height = 2.0,
  127.         species = 0,
  128.         max_health = 255,
  129.         groupid = 0,
  130.         bTrackable=1,
  131.  
  132.     },
  133.     
  134.     PhysParams = {
  135.         mass = 80,
  136.         height = 1.8,
  137.         -- Original Eye eyeheight = 1.7,
  138.         eyeheight = 1.6,
  139.         sphereheight = 1.2,
  140.         radius = 0.45,
  141.     },
  142.  
  143. --pe_player_dimensions structure
  144. -- change log
  145. -- 1.july.02: x,y size changed from 0.6 to 0.4 allow the player to enter a 1meter wide gap
  146. --            animation looks fine, no wall cliping. Crouch height changed from 1.1 to 1.5
  147. --            and x,y from 0.6 to 0.45. At height 1.1 the players head was inside a wall. 
  148. --            Now looks better :] (ray)
  149.  
  150.     PlayerDimNormal = {
  151.         height = 1.8,
  152.         eye_height = 1.7,
  153.         ellipsoid_height = 1.2,
  154.         x = 0.45,
  155.         y = 0.45,
  156.         z = 0.6,
  157.         head_height = 1.7,
  158.         head_radius = 0.28,
  159.     },
  160.     PlayerDimCrouch = {
  161.         height = 1.5,
  162.         eye_height = 1.0,
  163.         ellipsoid_height = 0.95,
  164.         x = 0.45,
  165.         y = 0.45,
  166.         z = 0.5,
  167.     },
  168.     PlayerDimProne = {
  169.         height = 0.4,
  170.         eye_height = 0.5,
  171.         ellipsoid_height = 0.5,
  172.         x = 0.45,
  173.         y = 0.45,
  174.         z = 0.22,
  175.     },
  176.     AniRefSpeeds = {
  177.     -- those are not real scale ceff's - animation will slide, BUT sound for first person should be ok
  178.         WalkFwd = 3.5,
  179.         WalkSide = 3.5,
  180.         WalkBack = 3.5,
  181.         XWalkFwd = 3.5,
  182.         XWalkSide = 3.5, 
  183.         XWalkBack = 3.5,
  184.         XRunFwd = 4.5,
  185.         XRunSide = 3.5, 
  186.         XRunBack = 4.5,
  187.         RunFwd = 4.8,
  188.         RunSide = 4.8,
  189.         RunBack = 4.8,
  190.         CrouchFwd = 1.02,
  191.         CrouchSide = 1.02,
  192.         CrouchBack = 1.02,
  193.         
  194. --        WalkFwd = 1.27,
  195. --        WalkSide = 1.22,
  196. --        WalkBack = 1.29,
  197. --        XWalkFwd = 1.2,
  198. --        XWalkSide = 1.0, 
  199. --        XWalkBack = 0.94,
  200. --        RunFwd = 4.62,
  201. --        RunSide = 3.57,
  202. --        RunBack = 4.62,
  203. --        CrouchFwd = 1.02,
  204. --        CrouchSide = 1.02,
  205. --        CrouchBack = 1.04,
  206.         
  207.         
  208.     },
  209.     
  210.     DeadBodyParams = {
  211.       max_time_step = 0.025,
  212.       gravityz = -7.5,
  213.       sleep_speed = 0.025,
  214.       damping = 0.3,
  215.       freefall_gravityz = -9.81,
  216.       freefall_damping = 0.1,
  217.  
  218.       lying_mode_ncolls = 4,
  219.       lying_gravityz = -5.0,
  220.       lying_sleep_speed = 0.065,
  221.       lying_damping = 1.5,
  222.         
  223.         water_damping = 0.1,
  224.         water_resistance = 1000,    
  225.     },
  226.     BulletImpactParams = {
  227.     stiffness_scale = 73,
  228.     max_time_step = 0.02
  229.   },
  230.     
  231.     Params = { }, --used to pass params to the basic player
  232.  
  233.     keycards={},    -- holds player's keycards
  234.     explosives={},    -- holds player's explosives
  235.     items={},    -- generic items the player can pick up (heat vision goggles, etc..)
  236.     objects={},     -- very mission specific objects the player can pick up
  237.  
  238.     SwayModifierProning = 0.1,
  239.     SwayModifierCrouching = 0.5,
  240.  
  241. --    OnReset = BasicPlayer.OnReset,
  242.  
  243.     GrenadeType = "ProjFlashbangGrenade",
  244.     
  245.     move_params={
  246.         speed_run=5.0,
  247.         speed_walk=3.5,
  248.         speed_swim=6.5,
  249.         speed_crouch=1.6,
  250.         speed_prone=0.6,
  251.         jump_force=4.3,
  252.         lean_angle=7.5,
  253.         bob_pitch=0.015,
  254.         bob_roll=0.035,
  255.         bob_lenght=5.5,
  256.         bob_weapon=0.005,
  257.     },
  258.     
  259.     SoundEvents={
  260.         {"srunfwd",        7  },
  261.         {"srunfwd",        19 },
  262.         {"srunback",        5  },
  263.         {"srunback",        14 },
  264.         {"xwalkfwd",         2  },
  265.         {"xwalkfwd",         26 },
  266.         {"xwalkback",         0  },
  267.         {"xwalkback",         23 },
  268.         {"swalkback",         0  },
  269.         {"swalkback",         16 },
  270.         {"swalkfwd",          2  },
  271.         {"swalkfwd",          19 },
  272. --        {"cwalkback",        14,            0},
  273. --        {"cwalkback",        30,            0},
  274. --        {"cwalkfwd",        1,            0},
  275. --        {"cwalkfwd",        17,            0},
  276.  
  277.  
  278.         {"cwalkback",        9  },
  279.         {"cwalkback",        33 },
  280.         {"cwalkfwd",        12 },
  281.         {"cwalkfwd",        31 },
  282.  
  283.             {"pwalkfwd",        3  },
  284.  
  285.         {"arunback",        6  },
  286.         {"arunback",         15 },
  287.         {"arunfwd",         7  },
  288.         {"arunfwd",         19 },
  289.         {"asprintfwd",        5  },
  290.         {"asprintfwd",         13 },
  291.         {"asprintback",     6  },
  292.         {"asprintback",     15 },
  293.         {"awalkback",         1  },
  294.         {"awalkback",         17 },
  295.         {"awalkfwd",         1  },
  296.         {"awalkfwd",         20 },
  297.         --{"arunback",         5  },
  298.         --{"arunback",         15 },
  299.         {"pwalkback",        3  },
  300.         
  301. --        {"cwalkfwd",        1,Sound:Load3DSound("SOUNDS/ai/pain/pain5.wav",SOUND_UNSCALABLE,250,150,230)},
  302.     },
  303.  
  304.     idUnitHighlight=nil,                        -- used by the UnitHighlight on the server - this entity is removed on shutdown
  305. }
  306.  
  307. --------------------------------------------------------------------------------------------------------
  308. function Player:OnReset()    
  309.     self:SetScriptUpdateRate(self.UpdateTime);
  310.     if (self.JustLoaded==nil) then    -- [lennert] this is a dirty hack because OnReset is called after OnLoad for not very clear reasons; this should be fixed !
  311.         self.keycards={};
  312.         self.explosives={};    
  313.         self.items={};            
  314.         self.objects={}; 
  315.     end
  316.     self.JustLoaded=nil;    -- [lennert] this is a dirty hack because OnReset is called after OnLoad for not very clear reasons; this should be fixed !        
  317.  
  318.     self.cnt:SetMoveParams(self.move_params);
  319.     BasicPlayer.OnReset(self)
  320.     AI:RegisterWithAI(self.id, AIOBJECT_PLAYER, self.Properties);
  321.     self:EnableUpdate(1);
  322. end
  323.  
  324.  
  325. --------------------------------------------------------------------------------------------------------
  326. function Player:RegisterStates()
  327.     self:RegisterState( "Alive" );
  328.     self:RegisterState( "Dead" );
  329. end
  330.  
  331. function Player:LoadModel()
  332.     if(self.model_loaded==nil)then
  333. --        System:Log("self.cnt.model = "..self.cnt.model);
  334.         self:LoadCharacter(self.cnt.model,0);
  335.         self["model_loaded"]=1;
  336.         if(self.Properties.bHelmetOnStart==1)    then
  337.             self:LoadObject( "objects/characters/mercenaries/accessories/helmet.cgf", 0, 1 );
  338.         end    
  339.     end
  340. end
  341.  
  342.  
  343. --------------------------------------------------------------------------------------------------------
  344. -- \bInvulnerable 1=, nil
  345. function Player:ApplyTeamColor()
  346. --    System:Log("FX: ApplyTeamColor");
  347.     local color=self.cnt:GetColor();
  348.     
  349.     self:SetShaderFloat( "ColorR", color.x,0,0 );
  350.     self:SetShaderFloat( "ColorG", color.y,0,0 );
  351.     self:SetShaderFloat( "ColorB", color.z,0,0 );
  352. end
  353.  
  354. --------------------------------------------------------------------------------------------------------
  355. function Player:Server_OnInit()
  356.     -- register as main guy in the AI system
  357.     self:LoadModel();
  358.     BasicPlayer.Server_OnInit( self );
  359. --    self.cnt:SetMoveParams(self.move_params);            
  360.     self:OnReset();
  361. end
  362.  
  363. --------------------------------------------------------------------------------------------------------
  364. function Player:Client_OnInit()
  365.     self:LoadModel();
  366.     BasicPlayer.Client_OnInit( self );
  367.     self.cnt:SetMoveParams(self.move_params);            
  368. end
  369.  
  370. --------------------------------------------------------------------------------------------------------
  371. function Player:Client_OnRemoteEffect(toktable, pos, normal, userbyte)
  372. --    System:Log("_FX: Setting effect: "..tostring(self.id).."("..tostring(userbyte)..")");
  373.     if (userbyte == 0) then
  374.         -- set second shader to none
  375.         --BasicPlayer.SecondShader_None(self);
  376.         self.iPlayerEffect=1;
  377.     elseif (userbyte == 1) then
  378.         -- set second shader to apply team coloring
  379.         --BasicPlayer.SecondShader_TeamColoring(self);
  380.         self.iPlayerEffect=2;
  381.     elseif (userbyte == 2) then
  382.         -- turn on invulnerability
  383.         --BasicPlayer.SecondShader_Invulnerability(self,1,1,1,1);
  384.         self.iPlayerEffect=3;
  385.     elseif (userbyte == 3) then                        -- target is alive 
  386.         if (Game:IsMultiplayer()) then
  387.             local hit = {};
  388.             hit.pos = pos;
  389.             hit.normal = normal;
  390.             hit.target_material = Materials["mat_flesh"];
  391.             ExecuteMaterial2( hit , "bullet_hit");
  392.             if(self == _localplayer) then
  393.                 Hud:PlayMultiplayerHitSound();
  394.             end
  395.         end
  396.  
  397.         if(self == _localplayer) then
  398.             Hud.hit=5;
  399.         end
  400.     elseif (userbyte == 4) then                        -- target is dead
  401.         if (Game:IsMultiplayer()) then
  402.             local hit = {};
  403.             hit.pos = pos;
  404.             hit.normal = normal;
  405.             hit.target_material = Materials["mat_flesh"];
  406.             ExecuteMaterial2( hit , "bullet_hit");
  407.         end;
  408.     end
  409. end
  410.  
  411. --------------------------------------------------------------------------------------------------------
  412. function Player:ChangeEnergy( Units )
  413.     self.EnergyChanged = 1;
  414.     self.Energy = self.Energy + Units;
  415.     if (self.Energy > self.MaxEnergy) then
  416.         self.Energy = self.MaxEnergy;
  417.     end
  418.     if (self.Energy < 0) then
  419.         self.Energy = 0;
  420.     end
  421. end
  422.  
  423. --------------------------------------------------------------------------------------------------------
  424. function Player:OnLoad(stm)
  425.     BasicPlayer.OnLoad(self,stm);
  426.     self.keycards=ReadFromStream(stm);
  427.     self.explosives=ReadFromStream(stm);
  428.     self.items=ReadFromStream(stm);
  429.     self.objects=ReadFromStream(stm);
  430.     self.JustLoaded=1;    -- [lennert] this is a dirty hack because OnReset is called after OnLoad for not very clear reasons; this should be fixed !
  431. end
  432.  
  433. --------------------------------------------------------------------------------------------------------
  434. function Player:OnSave(stm)
  435.     BasicPlayer.OnSave(self,stm);
  436.     WriteToStream(stm,self.keycards);
  437.     WriteToStream(stm,self.explosives);
  438.     WriteToStream(stm,self.items);
  439.     WriteToStream(stm,self.objects); 
  440. end
  441.  
  442. --------------------------------------------------------------------------------------------------------
  443. Player.Server =
  444. {
  445. --    OnTimer = BasicPlayer.Server_OnTimer,
  446. --    OnUpdate = BasicPlayer.Server_OnTimer,    
  447.     OnEvent = BasicPlayer.Server_OnEvent,
  448.     OnInit = Player.Server_OnInit,
  449.     OnShutDown = BasicPlayer.Server_OnShutDown,    
  450.     Alive = {
  451.         OnBeginState = function( self )
  452.             System:LogToConsole("ServerAliveState");
  453.             self.cnt.modelhidden=0;
  454.         end,
  455.         OnEvent = BasicPlayer.Server_OnEvent,
  456.         OnDamage = BasicPlayer.Server_OnDamage,
  457. --        OnTimer = function( self )
  458.         OnUpdate = function( self )
  459.         
  460.             if (self.timetodie) then
  461.                 self:DrawCharacter(0,0);
  462.                 self.cnt.modelhidden=1;
  463.                 System:ExecuteCommand("kill");
  464.                 self.timetodie=nil;
  465.             end
  466.             BasicPlayer.Server_OnTimer(self);
  467.         end,
  468.     },
  469.     Dead = {
  470.         OnBeginState = function( self )
  471.             self:NetPresent(nil);
  472.             System:LogToConsole("ServerDeadState health "..self.cnt.health);
  473.             local weapon = self.cnt.weapon;
  474.             if (weapon) then
  475.                 self.cnt:DeselectWeapon();
  476.             end
  477.         end,
  478.         OnEvent = BasicPlayer.Server_OnEventDead,
  479.         OnDamage = function (self, hit)
  480.             BasicPlayer.Server_OnDamageDead( self, hit);
  481.         end,        
  482.         OnEndState = function( self )
  483.         end,
  484.         OnTimer = BasicPlayer.Server_OnTimer,
  485.     },
  486. }
  487.  
  488. --------------------------------------------------------------------------------------------------------
  489. Player.Client =
  490. {
  491. --    OnTimer = BasicPlayer.Client_OnTimer,
  492.     OnInit = Player.Client_OnInit,
  493.     OnRemoteEffect = Player.Client_OnRemoteEffect,
  494.     OnShutDown = BasicPlayer.Client_OnShutDown,
  495.     Alive = {
  496. --        OnTimer = BasicPlayer.Client_OnTimer,
  497.         OnUpdate = BasicPlayer.Client_OnTimer,
  498.         OnBeginState = function( self )
  499.             BasicPlayer.OnBeginAliveState(self);
  500.             if( self== _localplayer) then
  501.                 Input:SetActionMap("default");
  502.                 System:LogToConsole("ClientAliveState MY player");
  503.                 self.AnimationSystemEnabled = 1;
  504.                 self:EnablePhysics(1);
  505.                 if (Hud) then
  506.                     Hud.deaf_time=nil;
  507.                 end
  508.             end
  509.             System:LogToConsole("ClientAliveState");
  510.         end,
  511.         OnEndState = function( self )
  512.         end,
  513.         OnDamage = BasicPlayer.Client_OnDamage,
  514.         OnEvent = function (self,EventId,Params)
  515.             local EventSwitch=self.EventHandlers[EventId];
  516.             if(EventSwitch)then
  517.                 EventSwitch(self,EventId,Params);
  518.             else
  519.                 BasicPlayer.Client_OnEvent(self,EventId,Params);
  520.             end
  521.         end
  522.     },
  523.     Dead = {
  524.         OnBeginState = function( self )
  525.             BasicPlayer.OnBeginDeadState(self);
  526.             self.cnt.health=0;        -- server might not send this info
  527.             if (self == _localplayer) then
  528.                 ClientStuff.vlayers:DeactivateAll();
  529.                 -- disable the flashbang effect when the player dies
  530.                 System:SetScreenFx("FlashBang", 0);
  531.                 if (Hud) then
  532.                     Hud.deaf_time=nil;
  533.                 end
  534.  
  535.                 if (not Game:IsMultiplayer()) then    
  536.                     Hud:OnMiscDamage(10000);                    
  537.                     Hud:SetScreenDamageColor(0.9, 0.8, 0.8);
  538.                     
  539.                     System:SetScreenFx("ScreenFade",1);
  540.                     System:SetScreenFxParamFloat("ScreenFade","ScreenFadeTime",GameRules.TimeRespawn*1.2);
  541.                 end
  542.             end
  543.             self:KillCharacter(0);
  544.             self:SetPhysicParams(PHYSICPARAM_SIMULATION, self.DeadBodyParams);
  545.             self:SetPhysicParams(PHYSICPARAM_ARTICULATED, self.DeadBodyParams);
  546.             self:SetPhysicParams(PHYSICPARAM_BUOYANCY, self.DeadBodyParams);
  547.             if self.deathImpuls==nil or self.deathPoint==nil or self.deathImpulsePart==nil then
  548.                 System:Log("ERROR: self.cnt:StartDie wrong input");
  549.             end
  550.             self.cnt:StartDie( self.deathImpuls, self.deathPoint, self.deathImpulsePart, self.deathType );
  551.             -- stop breathing sound in case it is still playing...
  552.             if (self.ExhaustedBreathingSound) then
  553.                 Sound:StopSound(self.ExhaustedBreathingSound);
  554.             end
  555.             System:Log("ClientDeadState --- health "..self.cnt.health);
  556.             --BasicPlayer.PlayOneSound( self, self.deathSounds, 110 );
  557.             
  558.             self:SetTimer(self.UpdateTime);
  559.             self:SetScriptUpdateRate(0);
  560.             
  561.         end,
  562.         OnUpdate = BasicPlayer.Client_DeadOnUpdate,
  563.         OnEndState = function( self )
  564.         end,
  565.         OnDamage=BasicPlayer.Client_OnDamage,
  566.         OnTimer = BasicPlayer.Client_OnTimerDead,
  567.     },
  568. }
  569.  
  570. --------------------------------------------------------------------
  571. -- Items switch
  572. Player.ItemActivation={
  573.     -------------------------------
  574.     [0]=function(self)
  575.         --System:LogToConsole("ITEM1")
  576.         -- no binoculars if using mounted weapon
  577.  
  578.         if (self.cnt.has_binoculars == 1 and (not self.current_mounted_weapon) and (not  self.cnt:IsSwimming())) then
  579.             if(ClientStuff.vlayers:IsActive("Binoculars"))then
  580.                 ClientStuff.vlayers:DeactivateLayer("Binoculars");                
  581.                 --ClientStuff.vlayers:DeactivateLayer("HeatVision");
  582.             else
  583.                 if(ClientStuff.vlayers:IsActive("WeaponScope") or ClientStuff.vlayers:IsFading("WeaponScope"))then
  584.                     ClientStuff.vlayers:DeactivateLayer("WeaponScope",1);
  585.                 end
  586.                 ClientStuff.vlayers:ActivateLayer("Binoculars");
  587.             end
  588.         end
  589.     end,
  590.     -------------------------------
  591.     [1]=function(self)
  592.         --System:LogToConsole("ITEM1");                
  593.         
  594.                 
  595.         -- todo: handle screen refraction only when finished the fx                                        
  596.         if (self.items.heatvisiongoggles and (not self.cnt:IsSwimming())) then    
  597.         
  598.             if(ClientStuff.vlayers:IsActive("HeatVision"))then
  599.                 ClientStuff.vlayers:DeactivateLayer("HeatVision");
  600.             else
  601.                 -- need to be above minimum required energy (or if player is using binoculars)
  602.                 if ( self.Energy > self.MinRequiredEnergy or ClientStuff.vlayers:IsActive("Binoculars")) then
  603.                     -- activate cryvision
  604.                     ClientStuff.vlayers:ActivateLayer("HeatVision");
  605.                 
  606.                     -- set default cryvision color                    
  607.                     System:SetScreenFxParamFloat("NightVision", "NightVisionColorRed", -0.1);                        
  608.                     System:SetScreenFxParamFloat("NightVision", "NightVisionColorGreen", 0.2);                        
  609.                     System:SetScreenFxParamFloat("NightVision", "NightVisionColorBlue", 0.11);                        
  610.                                                                                                 
  611.                     -- set diferent cryvision color for weapon scopes
  612.                     if(ClientStuff.vlayers:IsActive("WeaponScope"))then
  613.                         -- tiago: check what scope is in use, and change nightvision color
  614.                         --if(_localplayer.cnt.weapon.name=="AW50") then
  615.                         --    System:SetScreenFxParamFloat("NightVision", "NightVisionColorRed", -0.1);                        
  616.                         --    System:SetScreenFxParamFloat("NightVision", "NightVisionColorGreen", 0.2);                        
  617.                         --    System:SetScreenFxParamFloat("NightVision", "NightVisionColorBlue", 0.3);                        
  618.                         --end                    
  619.                         if(_localplayer.cnt.weapon.name=="AG36") then
  620.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorRed", 0.3);                        
  621.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorGreen", 0.2);                        
  622.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorBlue", 0.0);                                            
  623.                         end
  624.                         if(_localplayer.cnt.weapon.name=="OICW") then
  625.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorRed", -0.1);                        
  626.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorGreen", 0.3);                        
  627.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorBlue", -0.11);                        
  628.                         end
  629.                         if(_localplayer.cnt.weapon.name=="RL") then
  630.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorRed", 0.1);                        
  631.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorGreen", 0.2);                        
  632.                             System:SetScreenFxParamFloat("NightVision", "NightVisionColorBlue", -0.11);                        
  633.                         end
  634.                                                             
  635.                     end
  636.                                                                                                                                                                         
  637.                 end
  638.             end
  639.         end
  640.         
  641.     end,
  642. }
  643. --------------------------------------------------------------------
  644. -- Events switch
  645. Player.EventHandlers={
  646.     -------------------------------
  647.     [ScriptEvent_ZoomToggle] = function(self,EventId,Params)
  648.             
  649.         local stats = self.cnt;
  650.         local weapon = stats.weapon;
  651.         if (weapon and (not weapon.NoZoom) and (not stats.reloading)) then
  652.             local dead_switch = weapon.ZoomDeadSwitch;
  653.             if (stats.first_person and not self.fireparams.no_zoom) then
  654.                 if(ClientStuff.vlayers:IsActive("WeaponScope"))then
  655.                     if( (Params==0 and (not dead_switch))
  656.                         or (Params==1 and dead_switch))then
  657.                         ClientStuff.vlayers:DeactivateLayer("WeaponScope");                        
  658.                     end
  659.                 elseif (not stats:IsSwimming()) then
  660.                     if(Params==1 and (not stats.running or weapon.AimMode==1))then
  661.                         if(ClientStuff.vlayers:IsActive("Binoculars"))then
  662.                             ClientStuff.vlayers:DeactivateLayer("Binoculars",1);
  663.                         end
  664.                         if (not ClientStuff.vlayers:IsFading("WeaponScope")) then
  665.                             ClientStuff.vlayers:ActivateLayer("WeaponScope");
  666.                         end
  667.                     end                                        
  668.                 end
  669.             end
  670.         end
  671.     end,
  672.     -------------------------------
  673.     [ScriptEvent_ZoomIn] = function(self,EventId,Params)
  674.         ZoomView:ZoomIn();
  675.     end,
  676.     -------------------------------
  677.     [ScriptEvent_ZoomOut] = function(self,EventId,Params)
  678.         ZoomView:ZoomOut();
  679.     end,
  680.     -------------------------------
  681.     [ScriptEvent_ItemActivated] = function(self,EventId,Params)
  682.         local ItemSwitch=self.ItemActivation[Params];
  683.         if(ItemSwitch)then
  684.             ItemSwitch(self);
  685.         end
  686.     end,
  687.     -------------------------------
  688.     [ScriptEvent_Deafened] = function(self,EventId,Params)
  689.         if (self==_localplayer and Hud~=nil) then
  690.             if (Hud.deaf_time) then
  691.                 if (Hud.deaf_time<Params.fTime) then
  692.                     Hud.deaf_time=Params.fTime;
  693.                 end
  694.             else
  695.                 Hud.deaf_time=Params.fTime;
  696.             end
  697.             Hud.initial_deaftime=Hud.deaf_time;
  698.  
  699.             System:LogToConsole("Deafened for "..Hud.deaf_time.." seconds...");
  700.         end
  701.     end,
  702.     [ScriptEvent_SelectWeapon]=function (self,eventid,Params)
  703.         if(Hud and self == _localplayer)then
  704.             Hud.weapons_alpha=1;
  705.         end
  706.         BasicPlayer.Client_OnEvent(self,EventId,Params);
  707.     end,
  708. }
  709. --------------------------------------------------------------------------------------------------------